package com.wmb.dome;
import com.wmb.bean.UserinfoBean;
import com.wmb.control.LoginControl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Dome1 {
    public static void main(String[] args) {
        //之前方法调用bean中UserinfoBean这个类直接创建对象
        UserinfoBean userinfoBean = new UserinfoBean();
        System.out.println(userinfoBean);
        System.out.println("=================1===================");

        //现在使用spring来对bean进行管理
        test01();
        test02();

    }

    public static void test01() {
        // create and configure beans
        // 如果是控制台程序，可以使用spring 容器的管理类  applicationcontext进行spring容器及spring容器中bean的操作
        ApplicationContext context = new ClassPathXmlApplicationContext("springconfig.xml");

        // 简单工厂模式:使用getBean("di名")的方法获取spring容器中创建好的类
        //变量置入
        Object objUserinfoBean = context.getBean("UserinfoBean");//UserinfoBean就是配置文件中的id

        System.out.println("从spring容器获取的javabean对象、pojo类：\n" + objUserinfoBean);

        //判断objUserinfoBean与objUserinfoBean2在内存中是否为同一个地址
        Object objUserinfoBean2 = context.getBean("UserinfoBean");
        System.out.println(objUserinfoBean2);

        // spring容器中获取的bean默认的是一个单例模式（说明spring容器中获取的bean是一个单例模式）？？？
        System.out.println("objUserinfoBean == objUserinfoBean2:" + (objUserinfoBean == objUserinfoBean2));
        System.out.println("-------------------2---------------------");

        //构造方法注入
        Object objUserinfoBean3 = context.getBean("UserinfoBean2");
        System.out.println(objUserinfoBean3);
        System.out.println("===================3=====================");

    }

    public static void test02(){
//
//        //使用创建对象新的方法进行多个类之间的调用：
//        //创建LoginControl对象
//        LoginControl loginControl = new LoginControl();
//        loginControl.loginControl();
//        System.out.println("======================4===================");

        //使用spring容器进行各类之间的调用：
        //LoginControl loginControl = new LoginControl()替换为：
        ClassPathXmlApplicationContext classContext = new ClassPathXmlApplicationContext("springconfig.xml");
        LoginControl loginControl1 = (LoginControl)classContext.getBean("LoginControl");
        //调用类中的方法
        loginControl1.loginControl();
    }
}
